#pragma once

#include "Duplicate/Duplicate.h"

//新手引导副本
class GuideDuplicate : public Duplicate
{
public:
	////////////////////////////////  Duplicate  //////////////////////////////////////////
	//初始化
	virtual bool Init(uint32_t nDuplicateID, uint32_t nSceneID, IBrushMonster *pBrush);
	//
	virtual void UnInit();
protected:
	//////////////////////////  IDuplicateState ////////////////////////////////////////////////
	virtual void OnReady_State();
	virtual void OnBegin_State();
	virtual void OnFinish_State();
	virtual void OnFlop_State();
	virtual void OnClean_State();
	virtual void OnDestory_State();
	//定时器更新
	virtual void OnTimerUpdate(uint32_t nTimerID);
	//执行事件
	virtual void OnExecuteEvent(uint16_t nEventID, uint32_t nSrcID, uint8_t bySrcType, void *pContext, int32_t nLen);
	//生物进入场景
	virtual void OnCreatureEnter(Creature *pCreature);
	//是否能进入
	virtual bool OnCanEnter(Creature *pCreature);
	//进入区域
	virtual bool OnEnterArea(uint32_t nAreaID);
	//复活
	virtual bool Relive(Player *pPlayer);
	//离开副本
	virtual int32_t LeaveDuplicate(Player *pPlayer, bool retMainCity = false);
	//获取新手引导当前的步骤索引
	virtual int32_t GetCurGuideIdx();
private:
	//完成任务事件
	void OnFinishTaskEvent(FinishTaskEvent &taskEvent);
public:
	explicit GuideDuplicate();
	virtual ~GuideDuplicate();
};